matplotlib中plot

您所在的位置:网站首页 matplotlib plot函数 matplotlib中plot

matplotlib中plot

#matplotlib中plot| 来源: 网络整理| 查看: 265

plt.plot()函数是我们平时绘图的时候最常用的另外一个函数之一,先放一下官网上的介绍,该函数的关键字参数不多,其中**kwargs不作介绍,和其他保持一致,下面通过例子详细说一下。

matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs) #调用格式说明 plot([x], y, [fmt], *, data=None, **kwargs) plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs) 1. 常用的调用方式

plot()方法一般是用来绘制线条的,包括直线、折线等,从上面的调用格式说明中可以看到,最简洁的调用方式是直接传入一个数组对象y,其他参数都是可选的。如下:先创建一个服从正态分布的数据,共100个点,直接传入plot()。

data = np.random.normal(5, 1, 100) fig = plt.figure() plt.plot(data) plt.show()

当只传入绘制的数据列表时,默认数据作为Y轴值,而X轴的坐标则是由数据的下标组成的,共100个点对应X轴的100个坐标。plt.plot()肯定也支持自定义X轴坐标,只需要调用的时候传入两个大小相同的数组即可,X坐标在前,Y坐标在后。plt.plot()默认是将每个点通过直线连接起来,所以当点比较少的时候就呈现下左图,当点较多时就呈现下右图,看似时曲线。

x = np.linspace(-np.pi, np.pi, 10) #x = np.linspace(-np.pi, np.pi, 100) y = np.sin(x) fig = plt.figure() plt.plot(x, y) plt.show()

2. 关键字参数 格式fmt : 字符串str, [可选optional],定义线条的颜色和样式的操作

如“ro”就是红色的圆圈,更多组合参见官网列表,

x = np.linspace(-np.pi, np.pi, 50) #x = np.linspace(-np.pi, np.pi, 100) y = np.sin(x) fig = plt.figure() fig.suptitle('fmt: ro') plt.plot(x, y, 'ro') #不可写成fmt='ro',目前不识别关键字fmt plt.show()

注意上面这样每个点之间就不能连接起来了,plot()函数还定义了每个点之间的连接方式,如'-.'表示点画线、'-'表示实线。

x = np.linspace(-np.pi, np.pi, 50) #x = np.linspace(-np.pi, np.pi, 100) y = np.sin(x) fig = plt.figure() fig.suptitle('fmt: r-*') plt.plot(x, y, 'r-*') #不可写成fmt='ro',目前不识别关键字fmt plt.show()

详细的标记如下面三个表所示。 

标记character

描述description

标记character

描述description

'o'

圆圈

'.'

'D'

菱形

's'

正方形

'd'

小菱形

'*'

星号

'H'

六边形1

'v'

一角朝下的三角形

'h'

六边形2

''

一角朝右的三角形

'|'

竖线

'^'

一角朝上的三角形

'8'

八边形

'+'

加号

'p'

五边形

'x'

X

','

像素

'None', '', ' '

线条风格

描述

线条风格

描述

'-'

实线

':'

虚线

'--'

破折线

'None', ' ', ''

什么都不画

'-.'

点划线

 

 

别名

颜色

别名

颜色

B

蓝色

G

绿色

R

红色

Y

黄色

C

青色

K

黑色

M

洋红色

W

白色

各种属性**kwargs:Line2D properties

这个属性就相当之多了,借用官网一句话:kwargs are used to specify properties like a line label (for auto legends), linewidth, antialiasing, marker face color.就是说该参数主要用来指明绘线的一些属性,如标签、线宽、标记、背景颜色等。下面就介绍几个常用的properties,其他的可以去官网查。

第一个是label,表示标签,如图就是说画的线的标签,通过调用plt.legend()之后会显示出来; fig = plt.figure() fig.suptitle('Figure: example for label') plt.plot([1,2,3,4], label='a') plt.plot([4,3,2,1], label='b') plt.legend() plt.show() 第二个是linewidth,表示线宽,也可以调用缩写lw=1等价于lienwidth=1; plt.plot([1,2,3,4], linewidth=1) plt.plot([4,3,2,1], linewidth=5) 第三个是color,表示颜色,一般来说会自动分配合适的颜色,用户也可以自定义任意符合的颜色; plt.plot([1,2,3,4], color='r') plt.plot([4,3,2,1], color='g') 第四个是linestyle,表示线的类型,也可以调用缩写ls='-.'等价于linestyle='-.' plt.plot([1,2,3,4], linestyle='--') plt.plot([4,3,2,1], linestyle='-.') 第五个是alpha,表示透明度,浮点类型 plt.plot([1,2,3,4], label='a', alpha=0.8) plt.plot([4,3,2,1], label='b', alpha=0.2) 第六个凑数的visible,表示是否显示 plt.plot([1,2,3,4], label='a', visible=True) plt.plot([4,3,2,1], label='b', visible=False)

 

3. 返回值

plt.plot()函数的返回值是一个存放Line2D类型的元素的列表,下面是官网的一句话。上面介绍的各种属性也可以之后通过面向对象的方式进行操作,具体会在后面的Line2D详解章节里面具体说明。

OK,在这里顺便多回答一点,每次绘图的时候用不用plt.show()?

如果你是最开始和我一样使用jupyter notebook来学习matplotlib,那你肯定也会有点疑问,plt.show()有没有好像都一样,那么该函数的作用是啥呢?简单来说plt.show()的使用与你当前使用的环境有关,总的来说可以分为三种开发环境,分别是脚本,IPython shell和Notebook。

1. 在脚本中画图

如果你在一个脚本文件中使用matplotlib,那么显示图形的时候必须使用plt.show(),该函数会启动一个事件循环(event loop),并找到所有当前可用的图形对象,然后打开一个或多个交互式窗口显示图形。例如你现在有一个python的脚本文件,代码如下:

import matplotlib.pyplot as plt import numpy as np plt.plot([1,2,3,4]) plt.show()

简简单单的两行代码,然后从命令行工具中执行这个脚本,然后会看到一个新窗口,里面显示你的图形。看似简单的一句话,但是这行代码却在后面完成了很多事情,体现了matplotlib跨平台的特性。每个平台的绘图接口API都是不一样的,plt.show()需要与你使用的操作系统的图形显示接口进行交互。虽然具体的操作细节会因操作系统和安装过程不同而有很大的差异,但是matplotlib会为你隐藏了所有的细节,非常省心。

不过有一点需要注意,一个python会话中只能使用一个plt.show(),因此通常都会把他放在脚本的最后。多个plt.show()命令会导致难以预料的显示异常,应该尽量避免。

2. 在IPython shell中画图

在IPython shell中交互式地使用matplotlib画图非常简单,在IPython启动的matplotlib模式就可以使用它。为了启动这个模式,你需要在启动IPython后使用%matplotlib魔法命令。此后的任何plt命令都会自动打开一个图形窗口,增加新的命令,图形就会更新,有一些变化(例如改变已经画好的线条属性)不会自动及时更新;对于这些变化,可以使用plt.draw()强势更新。

在IPython shell中启动matplotlib模式之后就不需要使用plt.show()了。

3. 在IPython notebook中画图

IPython notebook进行交互式画图与使用IPython shell类似,也需要使用%matplotlib命令激活。在notebook页面有两种展现形式。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3